function [Y,OutputWeight] = calculate_output(data_train, InputWeight, InputBias,T)
    num_train = size(data_train, 1);
    
    tempH = InputWeight * data_train(:, 2:end)';
    ind = ones(1, num_train);
    BiasMatrix = InputBias(:, ind);
    tempH = tempH + BiasMatrix;
    H = 1 ./ (1 + exp(-tempH));
    
    OutputWeight = QRIL_inverse.QR_schmidt(H', T'); % H'OutputWeight = T'
    
    Y = (H' * OutputWeight)';
end
